package com.wf.controller;

import com.wf.domain.SysRole;
import com.wf.dto.AssignPermDTO;
import com.wf.dto.PageDTO;
import com.wf.service.SysPermissionService;
import com.wf.service.SysRoleService;
import com.wf.web.base.BaseController;
import com.wf.web.domain.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 角色接口
 * 用于处理与角色相关的HTTP请求，提供角色列表查询、角色信息更新和权限分配等功能
 * @author mpk
 * @since 2024/10/6 11:30:54
 */
@RestController
@CrossOrigin
@RequestMapping("/role")
public class RoleController extends BaseController {

    @Autowired
    private SysPermissionService sysPermissionService; // 权限服务，用于处理权限相关操作

    @Autowired
    SysRoleService roleService; // 角色服务，用于处理角色相关操作

    /**
     * 获取角色列表
     * 根据PageDTO参数获取系统中的角色列表
     * @param pageDTO 分页参数对象，包含页码和每页数量等信息
     * @return 返回角色列表
     */
    @PostMapping("roleList")
    public Result roleList(@RequestBody PageDTO pageDTO) {

        List<SysRole> roles = roleService.getRoleList(pageDTO);
        return success(roles);
    }

    /**
     * 获取角色列表（接口预留）
     * 此接口目前未实现具体功能，预留待后续开发
     * @return 返回成功结果，无具体数据
     */
    @PostMapping("getRoleList")
    public Result getRoleList() {


        return success();
    }

    /**
     * 更新角色信息
     * 根据传入的角色对象更新系统中的角色信息
     * @param role 角色对象，包含角色ID、角色名等信息
     * @return 如果更新成功，返回成功结果；否则返回更新失败的提示
     */
    @PostMapping("updateRole")
    public Result updateRole(@RequestBody SysRole role) {

        boolean b = roleService.updateById(role);
        if (!b) {
            return failure("更新失败");
        }
        return success();
    }

    /**
     * 分配权限给角色
     * 根据传入的AssignPermDTO对象，为角色分配或更新权限
     * @param assignPermDTO 包含角色ID和权限ID列表的对象
     * @return 返回成功结果，表示权限分配成功
     */
    @PostMapping("assignPermission")
    public Result assignPermission(@RequestBody AssignPermDTO assignPermDTO) {

        sysPermissionService.updatePermission(assignPermDTO);


        return success();
    }


}
